A computer system typically executes many different processes at the same time, including operating system (OS) processes, utility processes, resource processes, communications processes, application processes, etc. The computer system may include multiple processors, and a multitasking OS allows multiple processes to share processors and other system resources. Each process may include multiple threads of execution, which may concurrently execute on one or more processors. Generally, it may be desired to manage the number of processes executing on the computer system in order to optimize system performance.
Certain server-based applications service data requests that are received over a network from one or more client computers. In a database application, these requests may be serviced using a dedicated server connection model or a shared server connection model. In the dedicated model, a dedicated server process is created for each client connection, and services the requests that are received from that client until the connection is terminated. The dedicated model increases the use of computer system resources, such as memory, processor time, etc., and may not be optimal for database applications that have high connection rates. In the shared model, a pool of shared server processes is managed by a supervisory process, such as a dispatcher, which assigns shared processes to service client connection requests that are received and stored in a request queue. The shared model reduces the number of concurrently executing server processes, as well as the amount of memory consumed, as compared to the dedicated model.